package com.kaizeli.website.pojo.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kaizeli.website.pojo.base.BaseDO;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 员工实体类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("employee")
public class EmployeeDO extends BaseDO {
    
    /**
     * 员工主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    
    /**
     * 项目编号
     */
    private String projectCode;
    
    /**
     * 客户单位
     */
    private String clientUnit;
    
    /**
     * 所在部门
     */
    private String department;
    
    /**
     * 所在团队
     */
    private String team;
    
    /**
     * 岗位名称
     */
    private String position;
    
    /**
     * 员工类型(正式/实习/见习)
     */
    private String employeeType;
    
    /**
     * 员工姓名
     */
    private String name;
    
    /**
     * 性别(男/女)
     */
    private String gender;
    
    /**
     * 婚姻状况(已婚/未婚)
     */
    private String maritalStatus;
    
    /**
     * 籍贯
     */
    private String nativePlace;
    
    /**
     * 民族
     */
    private String ethnicity;
    
    /**
     * 政治面貌
     */
    private String politicalStatus;
    
    /**
     * 身份证号
     */
    private String idCard;
    
    /**
     * 生日
     */
    private LocalDate birthday;
    
    /**
     * 户籍地址
     */
    private String registeredAddress;
    
    /**
     * 现居住地址
     */
    private String currentAddress;
    
    /**
     * 联系电话
     */
    private String phone;
    
    /**
     * 微信号
     */
    private String wechat;
    
    /**
     * 邮箱
     */
    private String email;
    
    /**
     * 员工编号
     */
    private String employeeCode;
    
    /**
     * 入职时间
     */
    private LocalDate hireDate;
    
    /**
     * 转正时间
     */
    private LocalDate confirmationDate;
    
    /**
     * 试用状态(试用期/已转正)
     */
    private String probation;
    
    /**
     * 员工状态（1在职，0离职）
     */
    private Integer status;
    
    /**
     * 学历
     */
    private String education;
    
    /**
     * 所学专业
     */
    private String major;
    
    /**
     * 毕业院校
     */
    private String university;
    
    /**
     * 毕业时间
     */
    private LocalDate graduationDate;
    
    /**
     * 技能证书
     */
    private String skillCertificates;
    
    /**
     * 基本工资
     */
    private BigDecimal baseSalary;
    
    /**
     * 小时工资率（用于计算人工费用）
     */
    private BigDecimal hourlyRate;
    
    /**
     * 紧急联系人
     */
    private String emergencyContact;
    
    /**
     * 紧急联系电话
     */
    private String emergencyPhone;
    
    /**
     * 银行卡号
     */
    private String bankAccount;
    
    /**
     * 开户行
     */
    private String bankName;
    
    /**
     * 是否已续签合同
     */
    private String contractRenewed;
    
    /**
     * 续签合同次数
     */
    private Integer renewalCount;
    
    /**
     * 最新合同开始时间
     */
    private LocalDate latestContractStart;
    
    /**
     * 最新合同结束时间
     */
    private LocalDate latestContractEnd;
    
    /**
     * 签合同公司
     */
    private String contractCompany;
    
    /**
     * 入职登记表
     */
    private String entryForm;
    
    /**
     * 身份证复印件
     */
    private String idCardCopy;
    
    /**
     * 学历毕业证书
     */
    private String diploma;
    
    /**
     * 学位证书
     */
    private String degreeCertificate;
    
    /**
     * 银行卡复印件
     */
    private String bankCardCopy;
    
    /**
     * 简历
     */
    private String resume;
    
    /**
     * 离职证明
     */
    private String leavingCertificate;
    
    /**
     * 三甲体检报告
     */
    private String medicalReport;
    
    /**
     * 保密协议
     */
    private String confidentialityAgreement;
    
    /**
     * 员工培训协议
     */
    private String trainingAgreement;
    
    /**
     * 规章制度确认书
     */
    private String rulesConfirmation;
    
    /**
     * 员工行为准则
     */
    private String codeOfConduct;
    
    /**
     * 备注
     */
    private String remarks;
}